package cn.bytets.rpc.api.invoke;

import cn.bytets.rpc.api.message.Result;
import cn.bytets.rpc.common.URL;

/**
 * 不同模式选择不同的 Invoker,最后都在各自的invoke执行方法
 * @param <T>
 */
public interface Invoker<T>{

    URL getUrl();
    /**
     * get service interface.
     *
     * @return service interface.
     */
    Class<T> getInterface();

    /**
     * invoke.
     *
     * @param invocation
     * @return result
     * @throws
     */
    Result invoke(Invocation invocation);
}
